package com.ruoyi.elastic.repository;

import com.ruoyi.elastic.domain.SkuInfo;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;
import java.util.Map;

public interface SkuInfoRepos extends ElasticsearchRepository<SkuInfo,Long> {

    /**
     * 自定义方法
     */

    /**
     * IS
     * 注意命名规则 ElasticsearchRepository 自动实现
     * {“bool” : {“must” : {“field” : {“id” : “?”}}}}
     * @param id
     * @return
     */
    SkuInfo findById(String id);

    /**
     * And
     * 注意命名规则 ElasticsearchRepository 自动实现
     * {“bool” : {“must” : [ {“field” : {“id” : “?”}}, {“field” : {“brandName” : “?”}} ]}}
     * @param map
     * @return
     */
    List<SkuInfo> findByIdAndBrandName(Map<String,String> map);

    /**
     * or
     * 注意命名规则 ElasticsearchRepository 自动实现
     * {“bool” : {“should” : [ {“field” : {“id” : “?”}}, {“field” : {“brandName” : “?”}} ]}}
     * @param map
     * @return
     */
    List<SkuInfo> findByIdOrBrandName(Map<String,String> map);

    /**
     * not
     * 注意命名规则 ElasticsearchRepository 自动实现
     * {“bool” : {“must_not” : {“field” : {“id” : “?”}}}}
     * @param id
     * @return
     */
    List<SkuInfo>  findByIdNot(String id);

    /**
     * range
     * 注意命名规则 ElasticsearchRepository 自动实现
     * {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
     * @param max min
     * @return
     */
    List<SkuInfo> findByPriceBetween(String max, String min);
}
